{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.models import Model\n",
    "from keras.layers import Dense, Activation\n",
    "from keras.datasets import mnist\n",
    "from keras.optimizers import Adam\n",
    "from keras.models import Sequential\n",
    "from keras import backend as K\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def autoencode(model):\n",
    "    \n",
    "    decoded_imgs = model.predict(x_test)\n",
    "    \n",
    "    get_3rd_layer_output = K.function([model.layers[0].input], [model.layers[1].output])\n",
    "    compressed = get_3rd_layer_output([x_test])\n",
    "    \n",
    "    return compressed\n",
    "\n",
    "def test_restoration(model):\n",
    "    \n",
    "    decoded_imgs = model.predict(x_test)\n",
    "    get_3rd_layer_output = K.function([model.layers[0].input], [model.layers[1].output])\n",
    "    \n",
    "    for i in range(2):\n",
    "        \n",
    "        print(\"original: \")\n",
    "        plt.imshow(x_test[i].reshape(28, 28))\n",
    "        plt.gray()\n",
    "        plt.show()\n",
    "        \n",
    "        #-------------------\n",
    "        \n",
    "        print(\"reconstructed: \")\n",
    "        plt.imshow(decoded_imgs[i].reshape(28, 28))\n",
    "        plt.gray()\n",
    "        plt.show()\n",
    "        \n",
    "        #-------------------\n",
    "        \n",
    "        print(\"compressed: \")\n",
    "        current_compressed = get_3rd_layer_output([x_test[i:i+1]])[0][0]\n",
    "        plt.imshow(current_compressed.reshape(8, 4))\n",
    "        plt.gray()\n",
    "        plt.show()\n",
    "        #print(current_compressed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.astype('float32') / 255.0\n",
    "x_test = x_test.astype('float32') / 255.0\n",
    "x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))\n",
    "x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))\n",
    "\n",
    "instances, input_features = x_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = Sequential()\n",
    "model.add(Dense(128, activation='relu', input_shape=(input_features,)))\n",
    "model.add(Dense(32, activation='relu'))\n",
    "model.add(Dense(128, activation='relu'))\n",
    "model.add(Dense(input_features, activation='sigmoid'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/3\n",
      "60000/60000 [==============================] - 12s 198us/step - loss: 0.1391 - val_loss: 0.1027\n",
      "Epoch 2/3\n",
      "60000/60000 [==============================] - 11s 177us/step - loss: 0.0992 - val_loss: 0.0946\n",
      "Epoch 3/3\n",
      "60000/60000 [==============================] - 11s 182us/step - loss: 0.0940 - val_loss: 0.0908\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x2c3ed19de48>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.compile(loss='binary_crossentropy', optimizer='adam')\n",
    "model.fit(x_train, x_train, epochs=3, validation_data=(x_test, x_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "layers = len(model.layers)\n",
    "\n",
    "for i in range(layers):\n",
    "    inp, out = model.layers[i].output.get_shape()\n",
    "    print(i,\". \",model.layers[i].output,\" (\",out,\")\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "weights = model.get_weights()\n",
    "\n",
    "for i in range(len(weights)):\n",
    "    print(i, \". \", len(weights[i]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "original: \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3ed79c198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "reconstructed: \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3ed9b1668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "compressed: \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3ed94a3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "original: \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3eee416d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "reconstructed: \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAD99JREFUeJzt3XusVeWZx/HfI3e5Y8MlVodORSNo8HIwk7SMeIE4o0RNLKnhDyYzckwsyTQZ46gxqcmkxoy2M/NXk2NKSuOl1CiDMU0tIUYdnRgQSUGZWgOMPXrCRbwBIhx45o+zmJziWc972HvtvTa8309izj772Wuvh+35nbX3ede7XnN3AcjPOXU3AKAehB/IFOEHMkX4gUwRfiBThB/IFOEHMkX4gUwRfiBTI9u5MzPjdEKgxdzdhvO4po78ZnaTmf3BzN43s/ubeS4A7WWNnttvZiMkvSdpsaReSZsk3enu7wbbcOQHWqwdR/5rJL3v7jvd/aikX0m6tYnnA9BGzYT/fEl/GvR9b3HfnzGzbjPbbGabm9gXgIo18we/od5afO1tvbv3SOqReNsPdJJmjvy9ki4Y9P03JX3UXDsA2qWZ8G+SNMfMvmVmoyV9X9IL1bQFoNUaftvv7v1mtkrSS5JGSFrt7u9U1hmAlmp4qK+hnfGZH2i5tpzkA+DMRfiBTBF+IFOEH8gU4QcyRfiBTLV1Pj/azywe9WHFpnxx5AcyRfiBTBF+IFOEH8gU4QcyRfiBTDHU1wbnnBP/jp04cWJYX7BgQVi/9957S2uHDx8Ot33qqafC+ujRo8P6p59+Gta3bt1aWvv444/DbY8ePRrW0RyO/ECmCD+QKcIPZIrwA5ki/ECmCD+QKcIPZIqr9w7T2LFjS2tjxowJt124cGFYX7lyZVifM2dOWJ8wYUJDNUkaOTI+1SP6d0tSf39/WN+1a1dp7fbbbw+3fe+998I6hsbVewGECD+QKcIPZIrwA5ki/ECmCD+QKcIPZKqp+fxmtlvSF5KOS+p3964qmqpD6hLXJ06cKK2lxuGvvPLKsD5z5sywnroeQDTW/uGHH4bbjhgxIqxPnz49rI8fPz6sT5o0qbQ2b968cFvG+Vuriot5XOfu+yt4HgBtxNt+IFPNht8l/c7M3jKz7ioaAtAezb7t/467f2Rm0yVtMLP/cfdXBz+g+KXALwagwzR15Hf3j4qveyWtk3TNEI/pcfeuM/mPgcDZqOHwm9l4M5t48rakJZK2V9UYgNZq5m3/DEnriiGykZKedvffVtIVgJZrOPzuvlPS/Ap7qVVqLH3y5MmltaVLl4bbXnrppWF9y5YtYf3JJ58M6/v27SutRecnSNKUKVPC+lVXXRXWV61aFdanTp1aWrv++uvDbdevXx/WU/82xBjqAzJF+IFMEX4gU4QfyBThBzJF+IFMZbNEd2rKbuoS1YsWLSqtzZ49O9z2tddeC+tr164N6/v3t27SZOqy4wcPHgzry5cvD+sXXnhhaS01XTg13ZihvuZw5AcyRfiBTBF+IFOEH8gU4QcyRfiBTBF+IFPZjPOPGjUqrKfG+fv6+kprTzzxRLjtzp07w3o0JVeSWrmM+rFjx8L6xRdfHNZTU36jsfrost5Sepo1msOrC2SK8AOZIvxApgg/kCnCD2SK8AOZIvxApqyVY8hf25lZ+3b29X03VY/OE4iWyJak48ePh/VWSo2VR/PtJenpp58O6wsWLAjrR44cKa3dcsst4bavvPJKWMfQ3D3+YS5w5AcyRfiBTBF+IFOEH8gU4QcyRfiBTBF+IFPJ+fxmtlrSLZL2uvtlxX3TJK2VNFvSbknL3P2T1rXZvNT5DKn6V199VWU7bTNt2rSwvnLlyrA+a9assJ46xyG61sHrr78ebovWGs6R/xeSbjrlvvslbXT3OZI2Ft8DOIMkw+/ur0o6cMrdt0paU9xeI+m2ivsC0GKNfuaf4e59klR8jdddAtBxWn4NPzPrltTd6v0AOD2NHvn3mNksSSq+7i17oLv3uHuXu3c1uC8ALdBo+F+QtKK4vULS+mraAdAuyfCb2TOS/lvSJWbWa2b/IOlRSYvN7I+SFhffAziDZDOf/2w2bty40tp9990XbnvXXXeF9dGjR4f1bdu2hfVly5aV1g4cOHUQCVVgPj+AEOEHMkX4gUwRfiBThB/IFOEHMpXNEt1nstRlxa+99trS2j333BNuO3Jk/CPw7rvvhvWHHnoorH/22WdhHfXhyA9kivADmSL8QKYIP5Apwg9kivADmSL8QKYY5z8DTJo0Kaw/+mj55RRSl+7+4IMPwvrjjz8e1lNTets5ZRynhyM/kCnCD2SK8AOZIvxApgg/kCnCD2SK8AOZYpy/A4wZMyasv/jii2F93rx5pbUjR46E2/b09IT1DRs2hPVmli4fMWJEWB81alRYP3r0aFg/ceLEafeUE478QKYIP5Apwg9kivADmSL8QKYIP5Apwg9kKrlEt5mtlnSLpL3ufllx38OSVkraVzzsQXf/TXJnLNE9pLlz54b1LVu2hPVoGe2XX3453Pbmm28O66nzBFKisfzUz17qPID+/v6wnuu1BKpcovsXkm4a4v5/c/criv+SwQfQWZLhd/dXJR1oQy8A2qiZz/yrzOz3ZrbazKZW1hGAtmg0/D+T9G1JV0jqk/STsgeaWbeZbTazzQ3uC0ALNBR+d9/j7sfd/YSkJyRdEzy2x9273L2r0SYBVK+h8JvZrEHf3i5pezXtAGiX5JReM3tG0iJJ3zCzXkk/krTIzK6Q5JJ2S7q7hT0CaIHkOH+lO8t0nD81L/2NN94I611d8SemgwcPltYWLlwYbrt169awnmIWDymfc075m8vUfPtOHqdP/bubOYfh+PHjDfU0aN+VjfMDOAsRfiBThB/IFOEHMkX4gUwRfiBTXLq7De64446wPn/+/LCeGjbatGlTaW3Hjh3htinRUJ2UnnYbDVt18lBeNE1akiZOnBjWU8N10VBh6pLkhw4dCuvDxZEfyBThBzJF+IFMEX4gU4QfyBThBzJF+IFMMc5fgQkTJoT17u7usJ6aHppaBjualjuMS7OH9dTy4anpytF049S+mxU9f+r/2Q033BDWFy9eHNYvv/zysP7II4+U1t5+++1wW8b5ATSF8AOZIvxApgg/kCnCD2SK8AOZIvxAphjnr0Bq7vfMmTPDeuoS1qk59dHluS+66KJw29R499VXXx3W9+3bF9Z3795dWtu/f3+47eHDh8N66jyBJUuWlNZuvPHGcNvrrrsurKf+n0fnN0jSokWLSmvbtm0Lt60KR34gU4QfyBThBzJF+IFMEX4gU4QfyBThBzKVHOc3swsk/VLSTEknJPW4+3+Y2TRJayXNlrRb0jJ3/6R1rXau1Jz51Dh+ak586hrwl1xySWlt48aN4bb9/f1hfdq0aU1t39vbW1rbvn17uO2MGTPCeup1mzt3bmktdZ2ClD179oT11L/t2WefLa198kl7YjScI3+/pH9y90sl/ZWkH5jZXEn3S9ro7nMkbSy+B3CGSIbf3fvcfUtx+wtJOySdL+lWSWuKh62RdFurmgRQvdP6zG9msyVdKelNSTPcvU8a+AUhaXrVzQFonWGf229mEyQ9J+mH7v75cK+/ZmbdkuKL2AFou2Ed+c1slAaC/5S7P1/cvcfMZhX1WZL2DrWtu/e4e5e7d1XRMIBqJMNvA4f4n0va4e4/HVR6QdKK4vYKSeurbw9Aq9gwLu38XUmvSdqmgaE+SXpQA5/7fy3pQkkfSPqeux9IPFfnrsnchLFjx4b1u+++O6w/8MADYX3y5Mmn3dNJqSW0R46MP/mlPt6lhiE///zz0lrqZy81pXfKlClh/dxzz234uVNTlfv6+sL6Y489FtZfeuml0tqXX34Zbpvi7sP6TJ78zO/u/yWp7Mnii5sD6Fic4QdkivADmSL8QKYIP5Apwg9kivADmUqO81e6s7N0nD81Fj5u3LiwnrpM9PLly8P6/PnzS2vnnXdeuG1qWmxqPHzXrl1hPbp0d+ry1wcOhKeNaOnSpWE9Wtp83bp14bbvvPNOWN+wYUNYT50HEOWu2UwOd5yfIz+QKcIPZIrwA5ki/ECmCD+QKcIPZIrwA5linP8sl1reOyX185GqR/tPXUsg1XtqPn90rYFDhw6F2x47diyspy5Z3s5cDbFvxvkBlCP8QKYIP5Apwg9kivADmSL8QKYIP5ApxvmBswzj/ABChB/IFOEHMkX4gUwRfiBThB/IFOEHMpUMv5ldYGYvm9kOM3vHzP6xuP9hM/vQzLYW//1t69sFUJXkST5mNkvSLHffYmYTJb0l6TZJyyQddPfHh70zTvIBWm64J/nEl1IZeKI+SX3F7S/MbIek85trD0DdTuszv5nNlnSlpDeLu1aZ2e/NbLWZTS3ZptvMNpvZ5qY6BVCpYZ/bb2YTJL0i6cfu/ryZzZC0X5JL+hcNfDT4+8Rz8LYfaLHhvu0fVvjNbJSkFyW95O4/HaI+W9KL7n5Z4nkIP9BilU3ssYElaH8uacfg4Bd/CDzpdknbT7dJAPUZzl/7vyvpNUnbJJ0o7n5Q0p2SrtDA2/7dku4u/jgYPRdHfqDFKn3bXxXCD7Qe8/kBhAg/kCnCD2SK8AOZIvxApgg/kCnCD2SK8AOZIvxApgg/kCnCD2SK8AOZIvxApgg/kKnkBTwrtl/S/w76/hvFfZ2oU3vr1L4kemtUlb39xXAf2Nb5/F/budlmd++qrYFAp/bWqX1J9NaounrjbT+QKcIPZKru8PfUvP9Ip/bWqX1J9NaoWnqr9TM/gPrUfeQHUJNawm9mN5nZH8zsfTO7v44eypjZbjPbVqw8XOsSY8UyaHvNbPug+6aZ2QYz+2Pxdchl0mrqrSNWbg5Wlq71teu0Fa/b/rbfzEZIek/SYkm9kjZJutPd321rIyXMbLekLnevfUzYzP5a0kFJvzy5GpKZ/aukA+7+aPGLc6q7/3OH9PawTnPl5hb1Vray9N+pxteuyhWvq1DHkf8aSe+7+053PyrpV5JuraGPjufur0o6cMrdt0paU9xeo4EfnrYr6a0juHufu28pbn8h6eTK0rW+dkFftagj/OdL+tOg73vVWUt+u6TfmdlbZtZddzNDmHFyZaTi6/Sa+zlVcuXmdjplZemOee0aWfG6anWEf6jVRDppyOE77n6VpL+R9IPi7S2G52eSvq2BZdz6JP2kzmaKlaWfk/RDd/+8zl4GG6KvWl63OsLfK+mCQd9/U9JHNfQxJHf/qPi6V9I6DXxM6SR7Ti6SWnzdW3M//8/d97j7cXc/IekJ1fjaFStLPyfpKXd/vri79tduqL7qet3qCP8mSXPM7FtmNlrS9yW9UEMfX2Nm44s/xMjMxktaos5bffgFSSuK2yskra+xlz/TKSs3l60srZpfu05b8bqWk3yKoYx/lzRC0mp3/3HbmxiCmf2lBo720sCMx6fr7M3MnpG0SAOzvvZI+pGk/5T0a0kXSvpA0vfcve1/eCvpbZFOc+XmFvVWtrL0m6rxtatyxetK+uEMPyBPnOEHZIrwA5ki/ECmCD+QKcIPZIrwA5ki/ECmCD+Qqf8DR23jq82NK3IAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3ed960470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "compressed: \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3eeec3e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "com = autoencode(model)\n",
    "\n",
    "test_restoration(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "decoder = Sequential()\n",
    "decoder.add(Dense(128, activation='relu', input_shape=(32,)))\n",
    "decoder.add(Dense(input_features, activation='sigmoid'))\n",
    "#decoder.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "32\n",
      "128\n",
      "128\n",
      "784\n"
     ]
    }
   ],
   "source": [
    "decoder_weights = decoder.get_weights()\n",
    "\n",
    "for i in range(len(decoder_weights)):\n",
    "    print(len(decoder_weights[i]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "32\n",
      "128\n",
      "128\n",
      "784\n"
     ]
    }
   ],
   "source": [
    "weights = model.get_weights()\n",
    "\n",
    "temp_weights = []\n",
    "\n",
    "for i in range(4, 8):\n",
    "    temp_weights.append(weights[i])\n",
    "\n",
    "for i in range(len(temp_weights)):\n",
    "    print(len(temp_weights[i]))\n",
    "\n",
    "decoder.set_weights(temp_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(32,)\n"
     ]
    }
   ],
   "source": [
    "#copy these matrix from the compressed representation value\n",
    "sample = np.array([2.59521651,5.63147545,2.05743384,4.32667685,6.58895254,0.0,3.75777841,15.93504238,8.22563648,10.76218987,9.22686291,7.61534977,8.59453583,7.27693939,0.0,0.0,6.01428413,5.45331526,4.60282326,5.23728228,6.86480665,13.43490028,5.81025648,10.99352455,10.77216816,2.27521825,5.83731318,7.09324121,3.53731441,6.28301096,4.87098885,3.07779741])\n",
    "print(sample.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'restored = decoder.predict(sample.reshape(1,32))\\n\\nplt.imshow(restored.reshape(28, 28))\\nplt.show()'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"restored = decoder.predict(sample.reshape(1,32))\n",
    "\n",
    "plt.imshow(restored.reshape(28, 28))\n",
    "plt.show()\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(len(com[0]),\"x\",len(com[0][0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.contrib.factorization.python.ops import clustering_ops\n",
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-17-c289a4c56e95>:4: KMeansClustering.__init__ (from tensorflow.contrib.learn.python.learn.estimators.kmeans) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.contrib.factorization.KMeansClustering instead of tf.contrib.learn.KMeansClustering. It has a similar interface, but uses the tf.estimator.Estimator API instead of tf.contrib.learn.Estimator.\n",
      "INFO:tensorflow:Using default config.\n",
      "WARNING:tensorflow:Using temporary folder as model directory: C:\\Users\\IS96273\\AppData\\Local\\Temp\\tmp9vanqhq3\n",
      "INFO:tensorflow:Using config: {'_save_summary_steps': 100, '_save_checkpoints_secs': 600, '_num_ps_replicas': 0, '_task_type': None, '_save_checkpoints_steps': None, '_model_dir': 'C:\\\\Users\\\\IS96273\\\\AppData\\\\Local\\\\Temp\\\\tmp9vanqhq3', '_evaluation_master': '', '_environment': 'local', '_is_chief': True, '_keep_checkpoint_max': 5, '_master': '', '_tf_config': gpu_options {\n",
      "  per_process_gpu_memory_fraction: 1\n",
      "}\n",
      ", '_session_config': None, '_tf_random_seed': None, '_task_id': 0, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x000002C3ED75C518>, '_log_step_count_steps': 100, '_keep_checkpoint_every_n_hours': 10000, '_num_worker_replicas': 0}\n"
     ]
    }
   ],
   "source": [
    "unsupervised_model = tf.contrib.learn.KMeansClustering(\n",
    "    10\n",
    "    , distance_metric = clustering_ops.SQUARED_EUCLIDEAN_DISTANCE #SQUARED_EUCLIDEAN_DISTANCE, COSINE_DISTANCE\n",
    "    , initial_clusters=tf.contrib.learn.KMeansClustering.RANDOM_INIT\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train_input_fn():\n",
    "    data = tf.constant(com[0], tf.float32)\n",
    "    return (data, None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\IS96273\\AppData\\Local\\Continuum\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\tensorflow\\contrib\\factorization\\python\\ops\\clustering_ops.py:196: calling reduce_sum (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "keep_dims is deprecated, use keepdims instead\n",
      "INFO:tensorflow:Create CheckpointSaverHook.\n",
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "INFO:tensorflow:Saving checkpoints for 1 into C:\\Users\\IS96273\\AppData\\Local\\Temp\\tmp9vanqhq3\\model.ckpt.\n",
      "INFO:tensorflow:loss = 3.95821e+06, step = 1\n",
      "INFO:tensorflow:global_step/sec: 273.06\n",
      "INFO:tensorflow:loss = 2.47405e+06, step = 101 (0.368 sec)\n",
      "INFO:tensorflow:global_step/sec: 398.05\n",
      "INFO:tensorflow:loss = 2.46812e+06, step = 201 (0.252 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.79\n",
      "INFO:tensorflow:loss = 2.46546e+06, step = 301 (0.251 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.091\n",
      "INFO:tensorflow:loss = 2.46387e+06, step = 401 (0.252 sec)\n",
      "INFO:tensorflow:global_step/sec: 388.441\n",
      "INFO:tensorflow:loss = 2.4628e+06, step = 501 (0.258 sec)\n",
      "INFO:tensorflow:global_step/sec: 397.771\n",
      "INFO:tensorflow:loss = 2.46196e+06, step = 601 (0.250 sec)\n",
      "INFO:tensorflow:global_step/sec: 395.377\n",
      "INFO:tensorflow:loss = 2.46131e+06, step = 701 (0.254 sec)\n",
      "INFO:tensorflow:global_step/sec: 392.159\n",
      "INFO:tensorflow:loss = 2.4608e+06, step = 801 (0.255 sec)\n",
      "INFO:tensorflow:global_step/sec: 393.353\n",
      "INFO:tensorflow:loss = 2.46037e+06, step = 901 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 390.434\n",
      "INFO:tensorflow:loss = 2.46e+06, step = 1001 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 395.034\n",
      "INFO:tensorflow:loss = 2.45968e+06, step = 1101 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 393.083\n",
      "INFO:tensorflow:loss = 2.4594e+06, step = 1201 (0.255 sec)\n",
      "INFO:tensorflow:global_step/sec: 397.008\n",
      "INFO:tensorflow:loss = 2.45914e+06, step = 1301 (0.251 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.176\n",
      "INFO:tensorflow:loss = 2.45889e+06, step = 1401 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 324.323\n",
      "INFO:tensorflow:loss = 2.45866e+06, step = 1501 (0.308 sec)\n",
      "INFO:tensorflow:global_step/sec: 388.253\n",
      "INFO:tensorflow:loss = 2.45843e+06, step = 1601 (0.257 sec)\n",
      "INFO:tensorflow:global_step/sec: 378.852\n",
      "INFO:tensorflow:loss = 2.45823e+06, step = 1701 (0.264 sec)\n",
      "INFO:tensorflow:global_step/sec: 386.104\n",
      "INFO:tensorflow:loss = 2.45804e+06, step = 1801 (0.259 sec)\n",
      "INFO:tensorflow:global_step/sec: 389.056\n",
      "INFO:tensorflow:loss = 2.45787e+06, step = 1901 (0.257 sec)\n",
      "INFO:tensorflow:global_step/sec: 401.391\n",
      "INFO:tensorflow:loss = 2.45771e+06, step = 2001 (0.250 sec)\n",
      "INFO:tensorflow:global_step/sec: 397.254\n",
      "INFO:tensorflow:loss = 2.45756e+06, step = 2101 (0.251 sec)\n",
      "INFO:tensorflow:global_step/sec: 336.225\n",
      "INFO:tensorflow:loss = 2.45742e+06, step = 2201 (0.298 sec)\n",
      "INFO:tensorflow:global_step/sec: 404.214\n",
      "INFO:tensorflow:loss = 2.45729e+06, step = 2301 (0.247 sec)\n",
      "INFO:tensorflow:global_step/sec: 398.745\n",
      "INFO:tensorflow:loss = 2.45717e+06, step = 2401 (0.251 sec)\n",
      "INFO:tensorflow:global_step/sec: 395.331\n",
      "INFO:tensorflow:loss = 2.45705e+06, step = 2501 (0.252 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.783\n",
      "INFO:tensorflow:loss = 2.45695e+06, step = 2601 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 385.748\n",
      "INFO:tensorflow:loss = 2.45685e+06, step = 2701 (0.259 sec)\n",
      "INFO:tensorflow:global_step/sec: 389.109\n",
      "INFO:tensorflow:loss = 2.45676e+06, step = 2801 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.971\n",
      "INFO:tensorflow:loss = 2.45667e+06, step = 2901 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 392.834\n",
      "INFO:tensorflow:loss = 2.45659e+06, step = 3001 (0.254 sec)\n",
      "INFO:tensorflow:global_step/sec: 394.867\n",
      "INFO:tensorflow:loss = 2.45651e+06, step = 3101 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 391.606\n",
      "INFO:tensorflow:loss = 2.45644e+06, step = 3201 (0.255 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.818\n",
      "INFO:tensorflow:loss = 2.45637e+06, step = 3301 (0.252 sec)\n",
      "INFO:tensorflow:global_step/sec: 390.741\n",
      "INFO:tensorflow:loss = 2.4563e+06, step = 3401 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 396.465\n",
      "INFO:tensorflow:loss = 2.45623e+06, step = 3501 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 395.43\n",
      "INFO:tensorflow:loss = 2.45616e+06, step = 3601 (0.253 sec)\n",
      "INFO:tensorflow:global_step/sec: 398.416\n",
      "INFO:tensorflow:loss = 2.4561e+06, step = 3701 (0.250 sec)\n",
      "INFO:tensorflow:global_step/sec: 399.761\n",
      "INFO:tensorflow:loss = 2.45604e+06, step = 3801 (0.250 sec)\n",
      "INFO:tensorflow:global_step/sec: 375.763\n",
      "INFO:tensorflow:loss = 2.45598e+06, step = 3901 (0.267 sec)\n",
      "INFO:tensorflow:global_step/sec: 351.316\n",
      "INFO:tensorflow:loss = 2.45593e+06, step = 4001 (0.284 sec)\n",
      "INFO:tensorflow:global_step/sec: 389.589\n",
      "INFO:tensorflow:loss = 2.45587e+06, step = 4101 (0.257 sec)\n",
      "INFO:tensorflow:global_step/sec: 380.946\n",
      "INFO:tensorflow:loss = 2.45582e+06, step = 4201 (0.262 sec)\n",
      "INFO:tensorflow:global_step/sec: 392.168\n",
      "INFO:tensorflow:loss = 2.45576e+06, step = 4301 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 390.761\n",
      "INFO:tensorflow:loss = 2.45571e+06, step = 4401 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 378.995\n",
      "INFO:tensorflow:loss = 2.45566e+06, step = 4501 (0.263 sec)\n",
      "INFO:tensorflow:global_step/sec: 392.597\n",
      "INFO:tensorflow:loss = 2.45561e+06, step = 4601 (0.256 sec)\n",
      "INFO:tensorflow:global_step/sec: 386.01\n",
      "INFO:tensorflow:loss = 2.45556e+06, step = 4701 (0.258 sec)\n",
      "INFO:tensorflow:global_step/sec: 381.368\n",
      "INFO:tensorflow:loss = 2.45551e+06, step = 4801 (0.263 sec)\n",
      "INFO:tensorflow:global_step/sec: 370.034\n",
      "INFO:tensorflow:loss = 2.45546e+06, step = 4901 (0.271 sec)\n",
      "INFO:tensorflow:Saving checkpoints for 5000 into C:\\Users\\IS96273\\AppData\\Local\\Temp\\tmp9vanqhq3\\model.ckpt.\n",
      "INFO:tensorflow:Loss for final step: 2.45542e+06.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "KMeansClustering(params={'mini_batch_steps_per_iteration': 1, 'training_initial_clusters': 'random', 'distance_metric': 'squared_euclidean', 'use_mini_batch': True, 'relative_tolerance': None, 'kmeans_plus_plus_num_retries': 2, 'num_clusters': 10, 'random_seed': 0})"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unsupervised_model.fit(input_fn=train_input_fn, steps=5000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Graph was finalized.\n",
      "INFO:tensorflow:Restoring parameters from C:\\Users\\IS96273\\AppData\\Local\\Temp\\tmp9vanqhq3\\model.ckpt-5000\n",
      "INFO:tensorflow:Running local_init_op.\n",
      "INFO:tensorflow:Done running local_init_op.\n",
      "following samples are clustered in same cluster:\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAADYNJREFUeJzt3X+oXPWZx/HPZ20CYouaFLMXYzc16rIqauUqiy2LSzW6S0wMWE3wjyy77O0fFbYYfxGECEuwLNvu7l+BFC9NtLVpuDHGWjYtsmoWTPAqGk2TtkauaTbX3A0pNkGkJnn2j3uy3MY7ZyYzZ+bMzfN+QZiZ88w552HI555z5pw5X0eEAOTzJ3U3AKAehB9IivADSRF+ICnCDyRF+IGkCD+QFOEHkiL8QFKf6+XKbHM5IdBlEeFW3tfRlt/2nbZ/Zfs92491siwAveV2r+23fZ6kX0u6XdJBSa9LWhERvyyZhy0/0GW92PLfLOm9iHg/Iv4g6ceSlnawPAA91En4L5X02ymvDxbT/ojtIdujtkc7WBeAinXyhd90uxaf2a2PiPWS1kvs9gP9pJMt/0FJl015PV/Soc7aAdArnYT/dUlX2v6y7dmSlkvaVk1bALqt7d3+iDhh+wFJ2yWdJ2k4IvZU1hmArmr7VF9bK+OYH+i6nlzkA2DmIvxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kBThB5Ii/EBShB9IivADSRF+IKme3rob7XnooYdK6+eff37D2nXXXVc67z333NNWT6etW7eutP7aa681rD399NMdrRudYcsPJEX4gaQIP5AU4QeSIvxAUoQfSIrwA0lx994+sGnTptJ6p+fi67R///6Gtdtuu6103gMHDlTdTgrcvRdAKcIPJEX4gaQIP5AU4QeSIvxAUoQfSKqj3/PbHpN0TNJJSSciYrCKps41dZ7H37dvX2l9+/btpfXLL7+8tH7XXXeV1hcuXNiwdv/995fO++STT5bW0Zkqbubx1xFxpILlAOghdvuBpDoNf0j6ue03bA9V0RCA3uh0t/+rEXHI9iWSfmF7X0S8OvUNxR8F/jAAfaajLX9EHCoeJyQ9J+nmad6zPiIG+TIQ6C9th9/2Bba/cPq5pEWS3q2qMQDd1clu/zxJz9k+vZwfRcR/VtIVgK5rO/wR8b6k6yvsZcYaHCw/olm2bFlHy9+zZ09pfcmSJQ1rR46Un4U9fvx4aX327Nml9Z07d5bWr7++8X+RuXPnls6L7uJUH5AU4QeSIvxAUoQfSIrwA0kRfiAphuiuwMDAQGm9uBaioWan8u64447S+vj4eGm9E6tWrSqtX3311W0v+8UXX2x7XnSOLT+QFOEHkiL8QFKEH0iK8ANJEX4gKcIPJMV5/gq88MILpfUrrriitH7s2LHS+tGjR8+6p6osX768tD5r1qwedYKqseUHkiL8QFKEH0iK8ANJEX4gKcIPJEX4gaQ4z98DH3zwQd0tNPTwww+X1q+66qqOlr9r1662aug+tvxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kJQjovwN9rCkxZImIuLaYtocSZskLZA0JuneiPhd05XZ5StD5RYvXlxa37x5c2m92RDdExMTpfWy+wG88sorpfOiPRFRPlBEoZUt/w8k3XnGtMckvRQRV0p6qXgNYAZpGv6IeFXSmbeSWSppQ/F8g6S7K+4LQJe1e8w/LyLGJal4vKS6lgD0Qtev7bc9JGmo2+sBcHba3fIftj0gScVjw299ImJ9RAxGxGCb6wLQBe2Gf5uklcXzlZKer6YdAL3SNPy2n5X0mqQ/t33Q9j9I+o6k223/RtLtxWsAM0jTY/6IWNGg9PWKe0EXDA6WH201O4/fzKZNm0rrnMvvX1zhByRF+IGkCD+QFOEHkiL8QFKEH0iKW3efA7Zu3dqwtmjRoo6WvXHjxtL6448/3tHyUR+2/EBShB9IivADSRF+ICnCDyRF+IGkCD+QVNNbd1e6Mm7d3ZaBgYHS+ttvv92wNnfu3NJ5jxw5Ulq/5ZZbSuv79+8vraP3qrx1N4BzEOEHkiL8QFKEH0iK8ANJEX4gKcIPJMXv+WeAkZGR0nqzc/llnnnmmdI65/HPXWz5gaQIP5AU4QeSIvxAUoQfSIrwA0kRfiCppuf5bQ9LWixpIiKuLaY9IekfJf1v8bbVEfGzbjV5rluyZElp/cYbb2x72S+//HJpfc2aNW0vGzNbK1v+H0i6c5rp/xYRNxT/CD4wwzQNf0S8KuloD3oB0EOdHPM/YHu37WHbF1fWEYCeaDf86yQtlHSDpHFJ3230RttDtkdtj7a5LgBd0Fb4I+JwRJyMiFOSvi/p5pL3ro+IwYgYbLdJANVrK/y2p95Odpmkd6tpB0CvtHKq71lJt0r6ou2DktZIutX2DZJC0pikb3axRwBd0DT8EbFimslPdaGXc1az39uvXr26tD5r1qy21/3WW2+V1o8fP972sjGzcYUfkBThB5Ii/EBShB9IivADSRF+IClu3d0Dq1atKq3fdNNNHS1/69atDWv8ZBeNsOUHkiL8QFKEH0iK8ANJEX4gKcIPJEX4gaQcEb1bmd27lfWRTz75pLTeyU92JWn+/PkNa+Pj4x0tGzNPRLiV97HlB5Ii/EBShB9IivADSRF+ICnCDyRF+IGk+D3/OWDOnDkNa59++mkPO/msjz76qGGtWW/Nrn+48MIL2+pJki666KLS+oMPPtj2sltx8uTJhrVHH320dN6PP/64kh7Y8gNJEX4gKcIPJEX4gaQIP5AU4QeSIvxAUk3P89u+TNJGSX8q6ZSk9RHxH7bnSNokaYGkMUn3RsTvutcqGtm9e3fdLTS0efPmhrVm9xqYN29eaf2+++5rq6d+9+GHH5bW165dW8l6Wtnyn5C0KiL+QtJfSvqW7aslPSbppYi4UtJLxWsAM0TT8EfEeES8WTw/JmmvpEslLZW0oXjbBkl3d6tJANU7q2N+2wskfUXSLknzImJcmvwDIemSqpsD0D0tX9tv+/OSRiR9OyJ+b7d0mzDZHpI01F57ALqlpS2/7VmaDP4PI2JLMfmw7YGiPiBpYrp5I2J9RAxGxGAVDQOoRtPwe3IT/5SkvRHxvSmlbZJWFs9XSnq++vYAdEvTW3fb/pqkHZLe0eSpPklarcnj/p9I+pKkA5K+ERFHmywr5a27t2zZUlpfunRpjzrJ5cSJEw1rp06dalhrxbZt20rro6OjbS97x44dpfWdO3eW1lu9dXfTY/6I+G9JjRb29VZWAqD/cIUfkBThB5Ii/EBShB9IivADSRF+ICmG6O4DjzzySGm90yG8y1xzzTWl9W7+bHZ4eLi0PjY21tHyR0ZGGtb27dvX0bL7GUN0AyhF+IGkCD+QFOEHkiL8QFKEH0iK8ANJcZ4fOMdwnh9AKcIPJEX4gaQIP5AU4QeSIvxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kBThB5Ii/EBShB9Iqmn4bV9m+79s77W9x/Y/FdOfsP0/tt8q/v1t99sFUJWmN/OwPSBpICLetP0FSW9IulvSvZKOR8S/trwybuYBdF2rN/P4XAsLGpc0Xjw/ZnuvpEs7aw9A3c7qmN/2AklfkbSrmPSA7d22h21f3GCeIdujtkc76hRApVq+h5/tz0t6RdLaiNhie56kI5JC0j9r8tDg75ssg91+oMta3e1vKfy2Z0n6qaTtEfG9aeoLJP00Iq5tshzCD3RZZTfwtG1JT0naOzX4xReBpy2T9O7ZNgmgPq182/81STskvSPpVDF5taQVkm7Q5G7/mKRvFl8Oli2LLT/QZZXu9leF8APdx337AZQi/EBShB9IivADSRF+ICnCDyRF+IGkCD+QFOEHkiL8QFKEH0iK8ANJEX4gKcIPJNX0Bp4VOyLpgymvv1hM60f92lu/9iXRW7uq7O3PWn1jT3/P/5mV26MRMVhbAyX6tbd+7Uuit3bV1Ru7/UBShB9Iqu7wr695/WX6tbd+7Uuit3bV0lutx/wA6lP3lh9ATWoJv+07bf/K9nu2H6ujh0Zsj9l+pxh5uNYhxoph0CZsvztl2hzbv7D9m+Jx2mHSauqtL0ZuLhlZutbPrt9GvO75br/t8yT9WtLtkg5Kel3Sioj4ZU8bacD2mKTBiKj9nLDtv5J0XNLG06Mh2f4XSUcj4jvFH86LI+LRPuntCZ3lyM1d6q3RyNJ/pxo/uypHvK5CHVv+myW9FxHvR8QfJP1Y0tIa+uh7EfGqpKNnTF4qaUPxfIMm//P0XIPe+kJEjEfEm8XzY5JOjyxd62dX0lct6gj/pZJ+O+X1QfXXkN8h6ee237A9VHcz05h3emSk4vGSmvs5U9ORm3vpjJGl++aza2fE66rVEf7pRhPpp1MOX42IGyX9jaRvFbu3aM06SQs1OYzbuKTv1tlMMbL0iKRvR8Tv6+xlqmn6quVzqyP8ByVdNuX1fEmHauhjWhFxqHickPScJg9T+snh04OkFo8TNffz/yLicEScjIhTkr6vGj+7YmTpEUk/jIgtxeTaP7vp+qrrc6sj/K9LutL2l23PlrRc0rYa+vgM2xcUX8TI9gWSFqn/Rh/eJmll8XylpOdr7OWP9MvIzY1GllbNn12/jXhdy0U+xamMf5d0nqThiFjb8yamYftyTW7tpclfPP6ozt5sPyvpVk3+6uuwpDWStkr6iaQvSTog6RsR0fMv3hr0dqvOcuTmLvXWaGTpXarxs6tyxOtK+uEKPyAnrvADkiL8QFKEH0iK8ANJEX4gKcIPJEX4gaQIP5DU/wG6SwYLYCwMKQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f4fadf60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f4918f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f494edd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f4766e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f47a26d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f4f6b278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f4fe4cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f501e240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f50595c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f50916a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f50cc240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAADYpJREFUeJzt3X2oVHUex/HP11sbWCbZg12y1jZq2YgetlsIxVKE0mZi/ZHpH6XsslcpYYP+2OiBjAgqtnZ7gMjookEP9mReYtuU2NIFicyiLEsj3Lx50e0aZvRHlN/94x6Xm935nXHOOXPm+n2/QO7MfOec82XqM+fM/M6cn7m7AMQzru4GANSD8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCOqwdm7MzDidEKiYu1szzyu05zezy83sUzP7zMxuKbIuAO1lrZ7bb2ZdkrZImi5pQNI7kua5+8eJZdjzAxVrx57/Qkmfufvn7v69pOckzS6wPgBtVCT8J0naPuL+QPbYT5hZr5ltMLMNBbYFoGRFvvAb7dDiZ4f17r5U0lKJw36gkxTZ8w9IOnnE/SmSdhRrB0C7FAn/O5JON7NTzewXkuZK6i+nLQBVa/mw391/MLPFkl6X1CWpz90/Kq0zAJVqeaivpY3xmR+oXFtO8gEwdhF+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxBUWy/djXjOOOOMhrUbbrghuex1112XrE+fPj1Z37hxY7IeHXt+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiKq/eikEceeSRZv/baaxvWJk2aVGjbe/bsSdaPPfbYQusfq7h6L4Akwg8ERfiBoAg/EBThB4Ii/EBQhB8IqtDv+c1sm6S9kn6U9IO795TRFMozYcKEZP2+++5L1s8555xkfdq0acl6kfNItmzZkqwPDQ21vG6UczGPS939qxLWA6CNOOwHgioafpe02szeNbPeMhoC0B5FD/svcvcdZnaCpDVm9om7rx35hOxNgTcGoMMU2vO7+47s7y5JKyVdOMpzlrp7D18GAp2l5fCb2ZFmNmH/bUkzJG0qqzEA1Spy2D9Z0koz27+eZ9z9n6V0BaBy/J7/EDB+/PiGtYcffji57IIFCwptO3vzb6jI/19z585N1l988cWW130o4/f8AJIIPxAU4QeCIvxAUIQfCIrwA0ExRfchYObMmQ1rRYfy8rz11lvJen9/f8vrfv/991teFvnY8wNBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUPykdww4//zzk/U1a9Y0rE2cOLHsdn6iq6ur0vXj4PGTXgBJhB8IivADQRF+ICjCDwRF+IGgCD8QFL/nHwNS4/iSdPTRRzesFT2P4+677y60PDoXe34gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCCp3nN/M+iRdKWmXu5+VPTZJ0gpJUyVtkzTH3b+urs2x7YgjjkjWlyxZkqzn/Sa/yFj+li1bkvVPPvmk5XWjszWz518m6fIDHrtF0hvufrqkN7L7AMaQ3PC7+1pJuw94eLak5dnt5ZKuKrkvABVr9TP/ZHcflKTs7wnltQSgHSo/t9/MeiX1Vr0dAAen1T3/TjPrlqTs765GT3T3pe7e4+49LW4LQAVaDX+/pPnZ7fmSVpXTDoB2yQ2/mT0rab2kX5vZgJn9UdK9kqab2VZJ07P7AMYQrtvfBrfddluyftdddyXrZunLsKf+G+aN48+YMSNZHxgYSNaLyDv/IW9OgO+++67Mdg4ZXLcfQBLhB4Ii/EBQhB8IivADQRF+ICgu3d0GZ599dm3bXrZsWbJe5VBenryfMp955pnJ+tatW5P1devWNaytWsV5aez5gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAoxvnbIO8nuXn1cePS79ErVqxoWLv//vuTyxb1yiuvJOuzZs2qdPspN998c8PalClTkst++eWXZbfTcdjzA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQjPO3Qd7l0fPq+/btK7R8yvjx45P1xx9/PFnPG8dv56XhD5R63e64447ksosWLSq7nY7Dnh8IivADQRF+ICjCDwRF+IGgCD8QFOEHgsod5zezPklXStrl7mdljy2R9CdJ/82edqu7/6OqJpHW39/f8rJ5186fN29ey+uWpKGhoYa11atXJ5c98cQTk/VLL720pZ4kaeLEiS0ve6hoZs+/TNLlozz+N3c/N/tH8IExJjf87r5W0u429AKgjYp85l9sZh+YWZ+ZHVNaRwDaotXwPybpNEnnShqU9ECjJ5pZr5ltMLMNLW4LQAVaCr+773T3H919n6QnJF2YeO5Sd+9x955WmwRQvpbCb2bdI+5eLWlTOe0AaJdmhvqelXSJpOPMbEDSnZIuMbNzJbmkbZIWVtgjgArkht/dRxvofbKCXtCiuXPnNqxt3749ueycOXMKbXvv3r3J+vXXX9+w9uabbyaXfeGFF1ppCU3iDD8gKMIPBEX4gaAIPxAU4QeCIvxAUFy6+xAwc+bMlmplmD17drK+Z8+ehrW+vr7ksldccUVLPaE57PmBoAg/EBThB4Ii/EBQhB8IivADQRF+IChr5xTKZlbffM01Wrx4cbL+0EMPJevjxqXfo/Om8K5SJ/f23nvvNaxddtllyWVT5yd0One3Zp7Hnh8IivADQRF+ICjCDwRF+IGgCD8QFOEHgmKcvw26urqS9d7e3mT90UcfTdbb+d/wQGbpIeUiva1fvz5ZHxgYSNYXLVrUsDaWx/HzMM4PIInwA0ERfiAowg8ERfiBoAg/EBThB4LKHec3s5MlPSXpREn7JC1194fMbJKkFZKmStomaY67f52zrpDj/EVNmzYtWV+5cmXD2vHHH192Oz9RZJx/06ZNyWXzfnM/NDSUrEdV5jj/D5JudvffSJom6UYzO1PSLZLecPfTJb2R3QcwRuSG390H3X1jdnuvpM2STpI0W9Ly7GnLJV1VVZMAyndQn/nNbKqk8yS9LWmyuw9Kw28Qkk4ouzkA1Wl6rj4zO0rSS5Jucvdv8j7rjViuV1L65HUAbdfUnt/MDtdw8J9295ezh3eaWXdW75a0a7Rl3X2pu/e4e08ZDQMoR274bXgX/6Skze7+4IhSv6T52e35klaV3x6AqjQz1HexpHWSPtTwUJ8k3arhz/3PSzpF0heSrnH33TnrYqivAqlpuG+//fbkshdccEGhbRcZ6nvttdeSy86aNaulnqJrdqgv9zO/u/9bUqOVpQdiAXQszvADgiL8QFCEHwiK8ANBEX4gKMIPBMWluw9x3d3dyfrChQuT9bzzBNauXZus9/f3N6ytWLEiuezg4GCyjtFx6W4ASYQfCIrwA0ERfiAowg8ERfiBoAg/EBTj/MAhhnF+AEmEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EFRu+M3sZDP7l5ltNrOPzOzP2eNLzOxLM3s/+3dF9e0CKEvuxTzMrFtSt7tvNLMJkt6VdJWkOZK+dfe/Nr0xLuYBVK7Zi3kc1sSKBiUNZrf3mtlmSScVaw9A3Q7qM7+ZTZV0nqS3s4cWm9kHZtZnZsc0WKbXzDaY2YZCnQIoVdPX8DOzoyS9Jeked3/ZzCZL+kqSS7pbwx8N/pCzDg77gYo1e9jfVPjN7HBJr0p63d0fHKU+VdKr7n5WznoIP1Cx0i7gaWYm6UlJm0cGP/sicL+rJW062CYB1KeZb/svlrRO0oeS9mUP3yppnqRzNXzYv03SwuzLwdS62PMDFSv1sL8shB+oHtftB5BE+IGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCCr3Ap4l+0rSf0bcPy57rBN1am+d2pdEb60qs7dfNvvEtv6e/2cbN9vg7j21NZDQqb11al8SvbWqrt447AeCIvxAUHWHf2nN20/p1N46tS+J3lpVS2+1fuYHUJ+69/wAalJL+M3scjP71Mw+M7Nb6uihETPbZmYfZjMP1zrFWDYN2i4z2zTisUlmtsbMtmZ/R50mrabeOmLm5sTM0rW+dp0243XbD/vNrEvSFknTJQ1IekfSPHf/uK2NNGBm2yT1uHvtY8Jm9jtJ30p6av9sSGZ2v6Td7n5v9sZ5jLv/pUN6W6KDnLm5ot4azSy9QDW+dmXOeF2GOvb8F0r6zN0/d/fvJT0naXYNfXQ8d18rafcBD8+WtDy7vVzD//O0XYPeOoK7D7r7xuz2Xkn7Z5au9bVL9FWLOsJ/kqTtI+4PqLOm/HZJq83sXTPrrbuZUUzePzNS9veEmvs5UO7Mze10wMzSHfPatTLjddnqCP9os4l00pDDRe7+W0m/l3RjdniL5jwm6TQNT+M2KOmBOpvJZpZ+SdJN7v5Nnb2MNEpftbxudYR/QNLJI+5PkbSjhj5G5e47sr+7JK3U8MeUTrJz/ySp2d9dNffzf+6+091/dPd9kp5Qja9dNrP0S5KedveXs4drf+1G66uu162O8L8j6XQzO9XMfiFprqT+Gvr4GTM7MvsiRmZ2pKQZ6rzZh/slzc9uz5e0qsZefqJTZm5uNLO0an7tOm3G61pO8smGMv4uqUtSn7vf0/YmRmFmv9Lw3l4a/sXjM3X2ZmbPSrpEw7/62inpTkmvSHpe0imSvpB0jbu3/Yu3Br1dooOcubmi3hrNLP22anztypzxupR+OMMPiIkz/ICgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBPU/hvIwkzZ8wuMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f5103c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f513f358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f5109f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f50d9588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f5136358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2c3f50e3e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "clusters = unsupervised_model.predict(input_fn=train_input_fn)\n",
    "\n",
    "print(\"following samples are clustered in same cluster:\")\n",
    "\n",
    "index = 0\n",
    "for i in clusters:\n",
    "    \n",
    "    current_cluster = i['cluster_idx']\n",
    "    features = x_test[index]\n",
    "    \n",
    "    if index < 200 and current_cluster == 4:\n",
    "        plt.imshow(x_test[index].reshape(28, 28))\n",
    "        plt.gray()\n",
    "        plt.show()\n",
    "       \n",
    "    index = index + 1\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
